Bezeichnung


PG:ExtendedUpdate -- Führt ein Update, eine Änderung in der Datenbank aus unter Verwendung von Bindungsvariablen.


Übersicht


Fail, ErrorCode = PG:ExtendedUpdate(Bind{Table}, SQL$, ConnectionID)


Beschreibung


PG:ExtendedUpdate kann nur Aktionen wie etwa "DROP TABLE" oder "CREATE TABLE" in der Datenbank ausführen. Es ist nicht möglich damit Daten zu lesen.

Für Abfragen wie "SELECT" benutzen Sie bitte PG:SimpleQuery oder PG:ExtendedQuery.


Im Gegensatz zu PG:SimpleUpdate() verwendet PG:ExtendedUpdate() aber Bindungsvariablen, welche vor sogenannten "SQL-Injection" schützen. SQL-Code und Benutzereingaben werden der Datenbank getrennt übergeben.


Bindungsvariablen müssen der Tabelle Bind übergeben werden!


Aufbau/Beispiel:

Index 0: Typ                ; #String, #Integer, #Double, #Float, #Short oder #BLOB

index 1: Inhalt                ; Index 0 und Index 1 entsprechen somit der SQL-Variable $1

Index 2: Typ                ; #String, #Integer, #Double, #Float, #Short oder #BLOB

index 3: Inhalt                ; Index 2 und Index 3 entsprechen somit der SQL-Variable $2


... und immer so weiter, je nachdem wie viele Variablen Sie benötigen.


Eingaben


Bind

Ist eine Tabelle die Ihre Bindungsvariablen enthalten muss.


SQL$

Dieser String muss die SQL-Abfrage enthalten.


ConnectionID

               ID der Netzwerkverbindung


Rückgabewerte


Fail

True wenn ein Fehler aufgetreten ist.

False wenn alles funktioniert hat.


ErrorCode

Einen dreistelligen internen Fehlercode oder einen fünfstelligen PostgreSQL Fehlercode.

Ansonsten False.


Beispiel


/****************************************************************

**                                                             **

** Name:        ExtendedUpdate                                 **

** Author:      Michael Suther                                 **

** Date:        01.05.19                                       **

** Interpreter: Hollywood 8.0                                  **

** Function:    Shows the use of a binding variable               **        

**                                                             **

**                                                             **

****************************************************************/


@INCLUDE "PostgreSQL_Lib.hws"


Block        

       Local Fail, fields, SQL$, i, a, ConnectionID

       Local Errorcode

       Local Host$ = "localhost"

       Local Port = 5432

       Local Database$ = "postgres"

       Local Username$ = "test"

       Local Passwort$ = "test"

       Local Bind = {}

       Local Result = {}

       

       ;registration

       Fail, ErrorCode, ConnectionID = PG:OpenDatabase(Host$, Port, Database$, Username$, Passwort$)

       

       ; Evaluating the Return values

       If Fail = False 

               NPrint("")

               NPrint("Connection was successfully established.")

       Else

               NPrint("")

               NPrint("The connection failed.")

               NPrint("")

               NPrint("Error code:  ", ErrorCode)

       EndIf

       

       ;Create binding variables ($1)

       InsertItem(Bind, #STRING)

       InsertItem(Bind, "Kai")

       

       ;Write another customer In the database.

       SQL$ =  "INSERT INTO Kunde VALUES ($1 , 'Mustertest', 200)"


       Fail, Errorcode = PG:ExtendedUpdate(Bind, SQL$, ConnectionID)

       

       If Fail = False

               NPrint("Database update successful")                

       Else

               NPrint("Database update failed.")

               NPrint("Error code:  ", ErrorCode)

       EndIf


       WaitLeftMouse        

       

       ;Close connection To the database.

       PG:CloseDatabase(ConnectionID)

EndBlock



Mit dem Personal Edition von HelpNDoc erstellt: Hilfedateien für das Qt Help-Framework erstellen